package com._520it.crm.mapper;

import com._520it.crm.domain.OrderBill;
import com._520it.crm.query.OrderBillQueryObject;
import com._520it.crm.query.QueryObject;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
@Repository
public interface OrderBillMapper {
    int deleteByPrimaryKey(Long id);

    Long insert(OrderBill orderBill);

    OrderBill selectByPrimaryKey(Long id);

    List<OrderBill> selectAll();

    int updateByPrimaryKey(OrderBill orderBill);

    /**
     *
     * @param qo 高级查询的参数
     * @return 返回查询的结果数
     */
    Integer queryforCount(QueryObject qo);

    /**
     *
     * @param qo 高级查询参数
     * @return 返回查询的结果集 集合
     */
    List<OrderBill> queryforList(QueryObject qo);

    Integer approvalQueryforCount(OrderBillQueryObject queryObject);

    List<OrderBill> approvalQueryforList(OrderBillQueryObject queryObject);

    /**
     * 跟新申请表单中的申请人信息 身份证号码
     * @param orderBillId 表单id
     * @param idCardNumber 申请人身份证号码
     */
    void updataApplyClientIdCardNumber(@Param("orderBillId") Long orderBillId,@Param("idCardNumber") String idCardNumber);

    /**
     * 跟新申请表单中的被保人信息 身份证号码
     * @param orderBillId 表单id
     * @param idCardNumber 被保人身份证号码
     */
    void updataRecognizeeIdCardNumber(@Param("orderBillId") Long orderBillId,@Param("idCardNumber") String idCardNumber);

    /**
     * 保存前台传过来的 保单的时间信息以及基本信息
     * @param orderBill 传过来的保单对象 包含有id
     */
    void updateTimeandBaseInfo(OrderBill orderBill);

    /**
     * 保存前台传过来的 客户车辆信息的id
     * @param orderBillId 前台传过来的保单id
     * @param clientCarIfoId 保存客户车辆信息之后获取的id
     */
    void updateClientCarInfo(@Param("orderBillId") Long orderBillId, @Param("clientCarIfoId") Long clientCarIfoId);

    /**
     * 维护保单和产品的中间表关系
     * @param id 保单id
     * @param productId 选择的产品的id
     */
    void insertRelationsToPro(@Param("id") Long id, @Param("productId") Long productId);

    /**
     * 表单申请批改的方法
     * @param orderId 表单id
     * @param remark 提交申请说明
     */
    void checkApply(@Param("orderId") Long orderId ,@Param("remark") String remark);

    /**
     * 表单提交续保申请 将表单状态修改为40
     * @param orderBillId 要修改状态的表单id
     */
    void changeState(Long orderBillId);
}